{
 "cells": [
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# $\\lambda$ variable for triaxial ellipsoids"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 1,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": [
    "%matplotlib inline"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": [
    "import matplotlib.pyplot as plt\n",
    "import numpy as np"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Here, we follow the reasoning presented by [Webster (1904)](#webster-dynamics) for analyzing the ellipsoidal coordinate  $\\lambda$ describing a triaxial ellipsoid.\n",
    "\n",
    "Let's consider an ellipsoid with semi-axes $a$, $b$, $c$ oriented along the $x$-, $y$-, and $z$-axis, respectively, where $a > b > c > 0$. This ellipsoid is defined by the following equation:"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "<a id='eq1'></a>\n",
    "$$\n",
    "\\frac{x^{2}}{a^{2}} + \\frac{y^{2}}{b^{2}} + \\frac{z^{2}}{c^{2}} = 1 \\: . \\tag{1}\n",
    "$$"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "A quadric surface which is confocal with the ellipsoid defined in [equation 1](#eq1) can be described as follows:"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "<a id='eq2'></a>\n",
    "\n",
    "$$\n",
    "\\frac{x^{2}}{a^{2} + \\rho} + \\frac{y^{2}}{b^{2} + \\rho} + \\frac{z^{2}}{c^{2} + \\rho} = 1 \\: , \\tag{2}\n",
    "$$"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "where $\\rho$ is a real number. We know that [equation 2](#eq2) represents an ellipsoid for $\\rho$ satisfying the condition"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "<a id='eq3'></a>\n",
    "\n",
    "$$\n",
    "\\rho + c^{2} > 0 \\: . \\tag{3}\n",
    "$$"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Given $a$, $b$, $c$, and a $\\rho$ satisfying [equation 3](#eq3), we may use [equation 2](#eq2) for determining a set of points $(x, y, z)$ lying on the surface of an ellipsoid confocal with that one defined in [equation 1](#eq1). Now, consider the problem of determining the ellipsoid which is confocal with that one defined in [equation 1](#eq1) and pass through a particular point $(x, y, z)$. This problem consists in determining the real number $\\rho$ that, given $a$, $b$, $c$, $x$, $y$, and $z$, satisfies the [equation 2](#eq2)."
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "collapsed": true
   },
   "source": [
    "By rearranging [equation 2](#eq2), we obtain the following cubic equation for $\\rho$:"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "$$\n",
    "f(\\rho) = (a^{2} + \\rho)(b^{2} + \\rho)(c^{2} + \\rho) - (b^{2} + \\rho)(c^{2} + \\rho) \\, x^{2}\n",
    "- (a^{2} + \\rho)(c^{2} + \\rho) \\, y^{2} - (a^{2} + \\rho)(b^{2} + \\rho) \\, z^{2} \\: .\n",
    "$$"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "This equation shows that:"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "$$\n",
    "\\rho = \\begin{cases}\n",
    "d \\to \\infty \\: &, \\quad f(\\rho) > 0 \\\\\n",
    "-c^{2} \\: &, \\quad f(\\rho) < 0 \\\\\n",
    "-b^{2} \\: &, \\quad f(\\rho) > 0 \\\\\n",
    "-a^{2} \\: &, \\quad f(\\rho) < 0\n",
    "\\end{cases} \\: .\n",
    "$$"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "By rearanging this equation, we obtain a simpler one given by:"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "<a id='eq4'></a>\n",
    "\n",
    "$$\n",
    "f(\\rho) = \\rho^{3} + p_{2} \\, \\rho^{2} + p_{1} \\, \\rho + p_{0} \\: , \\tag{4}\n",
    "$$"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "where"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "<a id='eq5'></a>\n",
    "\n",
    "$$\n",
    "p_{2} = a^{2} + b^{2} + c^{2} - x^{2} - y^{2} - z^{2} \\: , \\tag{5}\n",
    "$$"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "<a id='eq6'></a>\n",
    "\n",
    "$$\n",
    "p_{1} =  b^{2} \\, c^{2} + a^{2} \\, c^{2} + a^{2} \\, b^{2} - (b^{2} + c^{2}) \\, x^{2} \\\n",
    "- (a^{2} + c^{2}) \\, y^{2} - (a^{2} + b^{2}) \\, z^{2} \\tag{6}\n",
    "$$"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "and"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "<a id='eq7'></a>\n",
    "\n",
    "$$\n",
    "p_{0} =  a^{2} \\, b^{2} \\, c^{2} - b^{2} \\, c^{2} \\, x^{2} \n",
    "- a^{2} \\, c^{2} \\, y^{2} - a^{2} \\, b^{2} \\, z^{2} \\: . \\tag{7}\n",
    "$$"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Note that a particular $\\rho$ satisfying [equation 2](#eq2) results in $f(\\rho) = 0$ ([equation 4](#eq4)). \n",
    "\n",
    "In order to illustrate the parameter $\\rho$, consider the constants $a$, $b$, $c$, $x$, $y$, and $z$ given in the cell below:"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": [
    "a = 200.\n",
    "b = 180.\n",
    "c = 150.\n",
    "x = 210.\n",
    "y = 230.\n",
    "z = 300."
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "By using these constants, we calculate the coefficients $p_{2}$ ([equation 5](#eq5)), $p_{1}$ ([equation 6](#eq6)) and $p_{0}$ ([equation 7](#eq7)) as follows:"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": [
    "p2 = a**2 + b**2 + c**2 - x**2 - y**2 - z**2\n",
    "p1 = (b*c)**2 + (a*c)**2 + (a*b)**2 - (b**2 + c**2)*(x**2) - (a**2 + c**2)*(y**2) - (a**2 + b**2)*(z**2)\n",
    "p0 = (a*b*c)**2 - (b*c*x)**2 - (a*c*y)**2 - (a*b*z)**2"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "In the sequence, we define a set of values for the variable $\\rho$ in an interval $\\left[ \\rho_{min} \\, , \\rho_{max} \\right]$ and evaluate the cubic equation $f(\\rho)$ ([equation 4](#eq4))."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": [
    "rho_min = -a**2 - 10.\n",
    "rho_max = -c**2 + 2000.\n",
    "rho = np.linspace(rho_min, rho_max, 100)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 6,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": [
    "f = rho**3 + p2*(rho**2) + p1*rho + p0"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Finally, the cell below shows the cubic equation $f(\\rho)$ ([equation 4](#eq4)) evaluated in the range $\\left[ \\rho_{min} \\, , \\rho_{max} \\right]$ defined above."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 7,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "data": {
      "image/png": "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\nnaAqKmDWLDjrLBXdIqmi3RXd7r4EWNKMdh3q3K4GzmjVC27YAA0cXj548GDWrFnTqqeUlhk8eHDY\nEUJXWlnKqBWjWDFqBdl9ssOOI5L0Skth1ChYsSK4ZreIiIhIY9pd0d3mdu1qcHK3bt0a/K23SDxU\n76mmtLKU6j3VYUcRSQnV1UHhXa23lIiIiESha0yLRNQ/468kLvVVclF/tR9m9riZfWBmVWb2sZkt\nNbOoB8ia2exI+51m9hczO7It8iaSVHyfaJkSX6otD2iZkkUqLlNTVHSLRLS3N38yU18lF/VXu/Ic\nMIrgvCjnEJxD5ZGmZjCzqcAVwATgeOBL4Ckz6xrfqIklFd8nWqbEl2rLA1qmZJGKy9QUHV4uIiIi\nMeHut9W5+5GZ3QKsNLOO7v51/fYWXD7kauAGd38iMu18giuFnA083AaxRURE4kp7ukVERCTmzKw3\nMAZ4uaGCO+JwoB/wzN4J7r4deB0YHveQIiIibUBFt4iIiMSMmd1iZjuArcChBHusG9M/Mt5cb/rm\nOo81rGu7Ovo8ZtI6pZHdJ5u0TmlhR5FGpKUFV0VIUxeJpAwdXh4/aQBl5eVQXBx2FmmGbdu2UZyi\nfVVWWQYfQ9naMqgIO83+S+W+SkWp2F9lZfuOE1nZ/4Zs1Vd4M5sDXBel2WB3fydyey5wN3AYUAAs\nBUa09GWBmkYeC9avu3bFdf1aWVlZe7usDTq6Ld8nD/yfB6j+qJrij+L7evu7TJs2baq9/d577yXE\n50hb9dMDDwRXR4j3S6Xi57OWKTmkwjK1ZP1q7h7fNO2Umf0c+EPYOURERCLGuPtDLZ3JzDKA3lGa\nlbv77gbmPRj4CBju7q838Pgg4D3gWHdfW2f6C0Cxu09qYB6tX0VEJJFEXb9qT3f8PEXwW7b3AV3J\nVUREwpJGsNf5qdbM7O5bCQ4Vb42OkXFjx4KXA58ApwFrAczsAOC7wO8amUfrVxERSQTNXr9qT7eI\niIjsNzP7LkGx/BLwGcHlwm4A+gA5e/eEm9l64Hp3/1Pk/nXA9cB/EBTSNwBDgGx3/6qNF0NERCTm\ntKdbREREYmEn8O9AIdCd4AwSTwI31jv0/CjggL133H2umXUH7gIOBP4KnKGCW0REUoX2dIuIiIiI\niIjEiS4ZJiIiIiIiIhInKrpFRERERERE4kRFdzOYWVcze9PMaszs2/UeG2hmfzazL81ss5nNNbOO\n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\n",
      "text/plain": [
       "<matplotlib.figure.Figure at 0x7937a90>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "ymin = np.min(f) - 0.1*(np.max(f) - np.min(f))\n",
    "ymax = np.max(f) + 0.1*(np.max(f) - np.min(f))\n",
    "\n",
    "plt.close('all')\n",
    "plt.figure(figsize=(10,4))\n",
    "\n",
    "plt.subplot(1,2,1)\n",
    "plt.plot([rho_min, rho_max], [0., 0.], 'k-')\n",
    "plt.plot([-a**2, -a**2], [ymin, ymax], 'r--', label = '$-a^{2}$')\n",
    "plt.plot([-b**2, -b**2], [ymin, ymax], 'g--', label = '$-b^{2}$')\n",
    "plt.plot([-c**2, -c**2], [ymin, ymax], 'b--', label = '$-c^{2}$')\n",
    "plt.plot(rho, f, 'k-', linewidth=2.)\n",
    "plt.xlim(rho_min, rho_max)\n",
    "plt.ylim(ymin, ymax)\n",
    "plt.legend(loc = 'best')\n",
    "plt.xlabel('$\\\\rho$', fontsize = 20)\n",
    "plt.ylabel('$f(\\\\rho)$', fontsize = 20)\n",
    "\n",
    "plt.subplot(1,2,2)\n",
    "plt.plot([rho_min, rho_max], [0., 0.], 'k-')\n",
    "plt.plot([-a**2, -a**2], [ymin, ymax], 'r--', label = '$-a^{2}$')\n",
    "plt.plot([-b**2, -b**2], [ymin, ymax], 'g--', label = '$-b^{2}$')\n",
    "plt.plot([-c**2, -c**2], [ymin, ymax], 'b--', label = '$-c^{2}$')\n",
    "plt.plot(rho, f, 'k-', linewidth=2.)\n",
    "plt.xlim(rho_min, -200.)\n",
    "plt.ylim(-0.3*10**8, 10**7)\n",
    "plt.legend(loc = 'best')\n",
    "plt.xlabel('$\\\\rho$', fontsize = 20)\n",
    "#plt.ylabel('$f(\\\\rho)$', fontsize = 20)\n",
    "\n",
    "plt.tight_layout()\n",
    "\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Remember that we are interested in a $\\rho$ satisfying [equation 3](#eq3). Consequently, according to the figures shown above, we are interested in the largest root $\\lambda$ of the cubic equation $f(\\rho)$ ([equation 4](#eq4))."
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "The largest root $\\lambda$ of $f(\\rho)$ ([equation 4](#eq4)) can be calculated as follows ([Weisstein](#weisstein-cubic-formula)):"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "<a id='eq8'></a>\n",
    "\n",
    "$$\n",
    "\\lambda = 2 \\, \\sqrt{-Q} \\, \\cos \\left( \\frac{\\theta}{3}\\right) - \\frac{p_{2}}{3} \\: , \\tag{8}\n",
    "$$"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "where"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "<a id='eq9'></a>\n",
    "\n",
    "$$\n",
    "\\theta = \\cos^{-1} \\left( \\frac{R}{\\sqrt{Q^{3}}} \\right) \\: , \\tag{9}\n",
    "$$"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "<a id='eq10a'></a>\n",
    "\n",
    "$$\n",
    "Q = \\frac{3 \\, p_{1} - p_{2}^{2}}{9} \\tag{10a}\n",
    "$$"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "and"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "<a id='eq10b'></a>\n",
    "\n",
    "$$\n",
    "R = \\frac{9 \\, p_{1} \\, p_{2} - 27 \\, p_{0} - 2 \\, p_{2}^{3}}{54} \\: , \\tag{10b}\n",
    "$$"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "for the case in which the quantity $D < 0$, where $D = Q^{3} + R^{2}$. The cells below use the equations [8](#eq8), [9](#eq9), and [10](#eq10) to compute the root $\\lambda$."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 8,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "D = -1034963516680816233524756480.000\n"
     ]
    }
   ],
   "source": [
    "p = (3.*p1 - p2**2)/3.\n",
    "q = (9.*p1*p2 - 27.*p0 - 2.*p2**3)/27.\n",
    "\n",
    "Q = p/3.\n",
    "R = q/2.\n",
    "\n",
    "D = Q**3 + R**2\n",
    "\n",
    "print 'D = %.3f' % D"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 9,
   "metadata": {
    "collapsed": false
   },
   "outputs": [],
   "source": [
    "theta = np.arccos(R/np.sqrt(-Q*Q*Q))\n",
    "\n",
    "lamb = 2.*np.sqrt(-Q)*np.cos(theta/3.) - p2/3."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 10,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "lambda = 157846.44992\n"
     ]
    }
   ],
   "source": [
    "print 'lambda = %.5f' % lamb"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 14,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "array([ 157846.44991877,  -37471.61650327,  -28274.8334155 ])"
      ]
     },
     "execution_count": 14,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "np.roots([1.0, p2, p1, p0])"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "By substituing $\\lambda$ in [equation 4](#eq4), we can verify that it is a root of $f(\\rho)$."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 11,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": [
    "f_lamb = lamb**3 + p2*(lamb**2) + p1*lamb + p0"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 12,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "f(lambda) = 0.00000\n"
     ]
    }
   ],
   "source": [
    "print 'f(lambda) = %.5f' % f_lamb"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### References"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "<a id='webster-dynamics'></a>\n",
    "\n",
    "* Webster, A. G. 1904. The Dynamics of Particles and of Rigid, Elastic and Fluid Bodies. Universidade de Michigan.\n",
    "\n",
    "<a id='weisstein-cubic-formula'></a>\n",
    "\n",
    "* Weisstein, Eric W. Cubic Formula. From MathWorld--A Wolfram Web Resource. http://mathworld.wolfram.com/CubicFormula.html"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": []
  }
 ],
 "metadata": {
  "anaconda-cloud": {},
  "kernelspec": {
   "display_name": "Python [default]",
   "language": "python",
   "name": "python2"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 2
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython2",
   "version": "2.7.12"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 1
}
